package com.ruoyi.common.core.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author: tjk
 * @Date: 2025/2/25 19:27
 * @Description:添加缓存的注解
 **/
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})
//@Target 注解的参数是一个 ElementType 枚举类型的数组。
//ElementType.METHOD 表示该注解可以应用于方法上。
//ElementType.TYPE 表示该注解可以应用于类、接口（包括注解类型）、枚举等类型上。
//因此，@MyCache 注解可以被用在类、接口、枚举或者方法上。例如：
@Retention(RetentionPolicy.RUNTIME)
//RetentionPolicy.RUNTIME 表示该注解在运行时仍然保留，可以通过反射机制在运行时读取该注解的信息。
//除了 RUNTIME，RetentionPolicy 还有另外两个值：
//SOURCE：注解只在源代码中保留，编译成字节码文件后就会被丢弃。
//CLASS：注解在编译时会被保留在字节码文件中，但在运行时不会被加载到 JVM 中。
public @interface MyCache
    //@interface 是 Java 中定义注解的关键字
{

    // 缓存名称
    String cacheNames() default "";
    // 缓存key
    String key() default "";

    int time() default -1;


}
